package com.xnewtech.xplatform.swan.libs.config;

import com.xnewtech.xplatform.swan.libs.context.SpringContext;
import com.xnewtech.xplatform.swan.libs.web.VirtualLoginUserAop;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Import;

/**
 * 默认激活的配置，基本上项目所有的配置都写在这里了
 * <p>
 * 此类通过Import开启了很多的配置，这些配置都是项目基本需要的
 * <p>
 * 如果某个微服务不需要某个配置，可以自己手动引入配置，不用这个类
 *
 * @author xnew
 * @Date 2018/7/24 下午3:27
 */
@Configuration
@Import(value = {
        CustomWebConfig.class,
        DataSourceConfig.class,
        CustomFastJsonConfig.class,
        LoginContextConfig.class,
        MybatisPluginConfig.class,
        RedisConfig.class,
        RibbonConfig.class,
        ScannerConfig.class,
        SecurityConfiguration.class,
        SentinelConfig.class,
        ValidatorConfig.class
})
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class ContextConfig {

    /**
     * Spring Bean 快速调用
     *
     * @author xnew
     * @Date 2020/5/20 6:08 下午
     */
    @Bean
    public SpringContext springContext() {
        return new SpringContext();
    }

    /**
     * 虚拟的当前登陆用户AOP
     *
     * @author xnew
     * @Date 2020/5/20 6:37 下午
     */
    @Bean
    public VirtualLoginUserAop virtualLoginUserAop() {
        return new VirtualLoginUserAop();
    }

}